package {
	import flash.display.DisplayObjectContainer;
	import flash.display.MovieClip;
	import flash.events.Event;
	import TangoGames.Atores.AtorBase;
	import TangoGames.Atores.AtorInterface;
	
	/**
	 * ...
	 * @author Arthur&Honorato
	 */
	public class LuzAtor extends AtorBase implements AtorInterface 
	{
		//Heroi
		private var AT_Heroi:Heroi;
		//private var MC_HitHeroi:MovieClip = new MovieClip;
		
		//Feixe de Luz
		private var MC_Luz:MovieClip;
		
		public function LuzAtor(_heroi:Heroi) 
		{
			MC_Luz = new luz;
			
			super( MC_Luz );
			
			hitObject = MC_Luz.Hit;
			
			AT_Heroi = _heroi;
									
		}
		
		/* INTERFACE TangoGames.Atores.AtorInterface */
		
		public function inicializa():void 
		{
			//MC_HitHeroi = AT_Heroi.HeroiHit();
		}
		
		public function reinicializa():void 
		{
			
		}
		
		public function update(e:Event):void 
		{
			this.parent.setChildIndex( this , this.parent.numChildren - 1);
			MoveaLuz();
			calcularAnguloLuz();
		}
		
		private function MoveaLuz():void {
			
			this.x = AT_Heroi.MC_HeroiHit.x + AT_Heroi.x;
			this.y = AT_Heroi.MC_HeroiHit.y + AT_Heroi.y;
			
		}
		
		private function calcularAnguloLuz():void {
			// calculando o angulo da luz em relação ao ponteiro do mouse
			var ang:Number = Math.atan2(faseAtor.mouseY - (this.y) , faseAtor.mouseX - (this.x) );
			ang = ang * 180 / Math.PI;
			
			ang = limitaAnguloLuz(ang);
			
			this.rotation = ang;
			
		}
		private function limitaAnguloLuz(ang:Number):Number 
		{
		
		/**
		 * 
		 */
			
			if(AT_Heroi.Direcao == Heroi.DIRECAO_BAIXO){
				if (ang > 135 || ang < 45) {
					if (faseAtor.mouseX < this.x) {
						ang = 135;
					}
					else { ang = 45; }
				}
			}
			else if (AT_Heroi.Direcao == Heroi.DIRECAO_CIMA) {
				if (ang > -45 || ang < -135){
					if (faseAtor.mouseX < this.x) {
						ang = -135;
					}
					else { ang = -45; }					
				}
										
			}
			else if (AT_Heroi.Direcao == Heroi.DIRECAO_DIREITA) {
				if (ang > 45 || ang < -45){
					if (faseAtor.mouseY < this.y) {
						ang = -45;
					}
					else { ang = 45; }					
				}
			}
			else if (AT_Heroi.Direcao == Heroi.DIRECAO_ESQUERDA) {
				if ((ang < 135 && ang > 0) || (ang > -135 && ang < 0)){
					if (faseAtor.mouseY < this.y) {
						ang = -135;
					}
					else { ang = 135; }					
				}
			}
			
			return(ang);
		}
		
		public function remove():void 
		{
			
		}
		
/*		override public function hitTestAtor(_atorAlvo:AtorBase):Boolean {
			if (this == _atorAlvo) return false;
			if (MC_Luz.hitTestObject(_atorAlvo.hitObject)) {
				//if (testeHitShape(this, atorAlvo)) return true;
				if (testeHitShapeAtor(_atorAlvo)) {
					return true;
				}
			}
			return false
		}*/
		
		
	}

}